home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / DVDFR.ifs < prev    next >
Text File  |  2005-04-06  |  9KB  |  268 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Antoine Potten
  8. Title=DVDFR.com
  9. Description=Importation des donnΘes et image de DVDFR.com (pour utilisation personnelle uniquement !)
  10. Site=www.dvdfr.com
  11. Language=FR
  12. Version=1.0
  13. Requires=3.5.0
  14. Comments=Merci α l'Θquipe de DVDFR de fournir un accΦs simplifiΘ α leurs donnΘes.|Pour rappel, ces donnΘes sont accessibles uniquement pour une utilisation personnelle ; en aucun cas elles ne peuvent Ωtre utilisΘes commerciallement ou publiquement !|L'ancienne version du script avait ΘtΘ dΘveloppΘe par Antoine Potten et Fabrice Fert.
  15. License=Ce script permet de rΘcupΘrer les donnΘes du site de DVDFR pour une utilisation personnelle uniquement.|Ces donnΘes ne peuvent pas Ωtre rΘcupΘrΘes ni exploitΘes dans un but commercial ou mΩme pour une utilisation publique.|En utilisant ce script vous dΘclarez accepter ces conditions et endosser toute responsabilitΘ dans la maniΦre dont vous utilisez ces donnΘes.
  16. GetInfo=1
  17.  
  18. [Options]
  19. ListePays=1|1|0=Ne prend que le premier pays de la liste|1=Prend la liste de tous les pays, sΘparΘs par des virgules
  20. ListeCategories=1|1|0=Ne prend que la premiΦre catΘgorie de la liste|1=Prend la liste de toutes les catΘgories, sΘparΘes par des virgules
  21. Bonus=1|1|0=N'importe pas la liste des bonus|1=Importe la liste des bonus dans le champ Commentaires
  22.  
  23. ***************************************************)
  24.  
  25. program DVDFR;
  26.  
  27. var
  28.   MovieName: string;
  29.  
  30. // *** tΘlΘchargement et analyse des pages, contruction de la liste de choix de titres
  31.  
  32. procedure AnalyzePage(Address: string);
  33. var
  34.   xml: TJvSimpleXml;
  35.   CurItem: TJvSimpleXmlElem;
  36.   i: Integer;
  37.   s1, s2: string;
  38. begin
  39.   xml := TJvSimpleXml.Create(nil);
  40.   xml.LoadFromString(GetPage(Address));
  41.   //xml.LoadFromFile('T:\dvd2.php.xml');
  42.   if xml.Root.Name = 'dvds' then
  43.   begin
  44.     if xml.Root.Items.Count = 0 then
  45.     begin
  46.       ShowInformation('Aucun film trouvΘ pour "' + MovieName + '"');
  47.       xml.Free;
  48.       Exit;
  49.     end;
  50.     PickTreeClear;
  51.     PickTreeAdd('RΘsultats de la recherche de "' + MovieName + '"', '');
  52.     for i := 0 to xml.Root.Items.Count-1 do
  53.     begin
  54.       CurItem := xml.Root.Items.GetItem(i);
  55.       s1 := CurItem.Items.GetItemNamed('titres').Items.GetItemNamed('fr').Value;
  56.       s2 := CurItem.Items.GetItemNamed('titres').Items.GetItemNamed('vo').Value;
  57.       if s2 <> '' then
  58.         s1 := s1 + ' (' + s2 + ')';
  59.       if CurItem.Items.GetItemNamed('stars').Items.Count > 0 then
  60.       begin
  61.         s2 := CurItem.Items.GetItemNamed('stars').Items.GetItem(0).Value;
  62.         if s2 <> '' then
  63.           s1 := s1 + ' / ' + s2;
  64.       end;
  65.       s2 := CurItem.Items.GetItemNamed('edition').Value;
  66.       if s2 <> '' then
  67.         s1 := s1 + ' / ' + s2;
  68.       s2 := CurItem.Items.GetItemNamed('editeur').Value;
  69.       if s2 <> '' then
  70.         s1 := s1 + ' / ' + s2;
  71.       PickTreeAdd(s1, 'http://www.dvdfr.com/api/dvd.php?id=' + CurItem.Items.GetItemNamed('id').Value);
  72.     end;
  73.     if PickTreeExec(Address) then
  74.       AnalyzePage(Address);
  75.   end
  76.   else
  77.   if xml.Root.Name = 'dvd' then
  78.   begin
  79.     AnalyzeMoviePage(xml);
  80.   end;
  81.   if xml.Root.Name = 'errors' then
  82.   begin
  83.     ShowError(xml.Root.Items.GetItemNamed('error').Items.GetItemNamed('message').Value);
  84.   end;
  85.   xml.Free;
  86. end;
  87.  
  88. // *** analyse d'une fiche de film
  89.  
  90. procedure AnalyzeMoviePage(xml: TJvSimpleXml);
  91. var
  92.   Items: TJvSimpleXmlElems;
  93.   CurItem: TJvSimpleXmlElem;
  94.   s1, s2: string;
  95.   i: Integer;
  96. begin
  97.   Items := xml.Root.Items;
  98.   SetField(fieldURL, Items.GetItemNamed('url').Value);
  99.   s1 := Items.GetItemNamed('titres').Items.GetItemNamed('fr').Value;
  100.   s2 := Items.GetItemNamed('titres').Items.GetItemNamed('vo').Value;
  101.   if s2 = '' then
  102.     SetField(fieldOriginalTitle, s1)
  103.   else
  104.   begin
  105.     SetField(fieldOriginalTitle, s2);
  106.     SetField(fieldTranslatedTitle, s1);
  107.   end;
  108.   if CanSetField(fieldCountry) then
  109.   begin
  110.     s1 := '';
  111.     CurItem := Items.GetItemNamed('listePays');
  112.     for i := 0 to CurItem.Items.Count-1 do
  113.     begin
  114.       if s1 <> '' then
  115.       begin
  116.         if GetOption('ListePays') = 0 then
  117.           Break
  118.         else
  119.           s1 := s1 + ', ';
  120.       end;
  121.       s1 := s1 + CurItem.Items.GetItem(i).Value;
  122.     end;
  123.     SetField(fieldCountry, s1);
  124.   end;
  125.   SetField(fieldYear, Items.GetItemNamed('annee').Value);
  126.   s1 := StringReplace(StringReplace(Items.GetItemNamed('synopsis').Value, #10, ' '), #13, '');
  127.   SetField(fieldDescription, s1);
  128.   SetField(fieldLength, Items.GetItemNamed('duree').Value);
  129.   if CanSetField(fieldVideoBitrate) then
  130.   begin
  131.     CurItem := Items.GetItemNamed('bitrate');
  132.     s1 := CurItem.Value;
  133.     if CurItem.Properties.GetItemNamed('unite').Value = 'mbits/s' then
  134.     s1 := FloatToStr(StrToFloat(StringReplace(s1, ',', '.')) * 1000.0);
  135.     SetField(fieldVideoBitrate, s1);
  136.   end;
  137.   SetField(fieldVideoFormat, 'MPEG2');
  138.   CurItem := Items.GetItemNamed('disques');
  139.   SetField(fieldDisks, CurItem.Properties.GetItemNamed('nbdiscs').Value);
  140.   if CurItem.Items.Count > 0 then
  141.     SetField(fieldMediaType, CurItem.Items.GetItem(0).Value);
  142.   CurItem := Items.GetItemNamed('image');
  143.   if CurItem.Items.Count > 0 then
  144.     SetField(fieldResolution, CurItem.Items.GetItemNamed('aspect_ratio').Value);
  145.   if CanSetField(fieldActors) or CanSetField(fieldDirector) then
  146.     GetStars(Items.GetItemNamed('stars').Items);
  147.   if CanSetField(fieldCategory) then
  148.   begin
  149.     s1 := '';
  150.     CurItem := Items.GetItemNamed('categories');
  151.     for i := 0 to CurItem.Items.Count-1 do
  152.     begin
  153.       if s1 <> '' then
  154.       begin
  155.         if GetOption('ListeCategories') = 0 then
  156.           Break
  157.         else
  158.           s1 := s1 + ', ';
  159.       end;
  160.       s1 := s1 + CurItem.Items.GetItem(i).Value;
  161.     end;
  162.     SetField(fieldCategory, s1);
  163.   end;
  164.   if CanSetField(fieldLanguages) or CanSetField(fieldAudioFormat) then
  165.     GetAudioTracks(Items.GetItemNamed('audiotracks').Items);
  166.   if CanSetField(fieldSubtitles) then
  167.   begin
  168.     CurItem := Items.GetItemNamed('soustitrage');
  169.     s1 := '';
  170.     for i := 0 to CurItem.Items.Count-1 do
  171.       if CurItem.Items.GetItem(i).Properties.GetItemNamed('type').Value = 'normal' then
  172.       begin
  173.         if s1 <> '' then
  174.           s1 := s1 + ', ';
  175.         s1 := s1 + CurItem.Items.GetItem(i).Value;
  176.       end;
  177.     SetField(fieldSubtitles, s1);
  178.   end;
  179.   if CanSetField(fieldComments) then
  180.   begin
  181.     CurItem := Items.GetItemNamed('listeBonus');
  182.     s1 := '';
  183.     for i := 0 to CurItem.Items.Count-1 do
  184.     begin
  185.       s2 := StringReplace(CurItem.Items.GetItem(i).Value, #10, #13#10);
  186.       s2 := Trim(StringReplace(s2, #13#13, #13));
  187.       HTMLDecode(s2);
  188.       if s2 <> '' then
  189.         s1 := s1 + s2 + #13#10;
  190.     end;
  191.     SetField(fieldComments, s1);
  192.   end;
  193.   s1 := Items.GetItemNamed('cover').Value;
  194.   if Pos('nocover', s1) = 0 then
  195.     GetPicture(s1);
  196. end;
  197.  
  198. // *** rΘcupΦre les acteurs et rΘalisateurs dans la liste des stars
  199.  
  200. procedure GetStars(Items: TJvSimpleXmlElems);
  201. var
  202.   sActors, sDirectors: string;
  203.   i: Integer;
  204.   CurItem: TJvSimpleXmlElem;
  205. begin
  206.   sActors := '';
  207.   sDirectors := '';
  208.   for i := 0 to Items.Count-1 do
  209.   begin
  210.     CurItem := Items.GetItem(i);
  211.     if CurItem.Properties.GetItemNamed('type').Value = 'Acteur' then
  212.     begin
  213.       if sActors <> '' then
  214.         sActors := sActors + ', ';
  215.       sActors := sActors + CurItem.Value;
  216.     end
  217.     else
  218.     if CurItem.Properties.GetItemNamed('type').Value = 'RΘalisateur' then
  219.     begin
  220.       if sDirectors <> '' then
  221.         sDirectors := sDirectors + ', ';
  222.       sDirectors := sDirectors + CurItem.Value;
  223.     end
  224.   end;
  225.   SetField(fieldActors, sActors);
  226.   SetField(fieldDirector, sDirectors);
  227. end;
  228.  
  229. // *** rΘcupΦre les langues et formats des pistes audio
  230.  
  231. procedure GetAudioTracks(Items: TJvSimpleXmlElems);
  232. var
  233.   i: Integer;
  234.   sFormats, sLanguages: string;
  235.   CurItem: TJvSimpleXmlElem;
  236. begin
  237.   sFormats := '';
  238.   sLanguages := '';
  239.   for i := 0 to Items.Count-1 do
  240.   begin
  241.     CurItem := Items.GetItem(i);
  242.     if sFormats <> '' then
  243.       sFormats := sFormats + ', ';
  244.     if sLanguages <> '' then
  245.       sLanguages := sLanguages + ', ';
  246.     sFormats := sFormats + Trim(CurItem.Items.GetItemNamed('standard').Value + ' ' + CurItem.Items.GetItemNamed('encodage').Value);
  247.     sLanguages := sLanguages + CurItem.Items.GetItemNamed('langue').Value
  248.   end;
  249.   SetField(fieldAudioFormat, sFormats);
  250.   SetField(fieldLanguages, sLanguages);
  251. end;
  252.  
  253. // *** dΘbut du programme ***
  254.   
  255. begin
  256.   if AcceptLicense(1) then // modifier ou retirer cette ligne revient α accepter la licence :p
  257.     if CheckVersion(3,5,0) then
  258.     begin
  259.       MovieName := GetField(fieldTranslatedTitle);
  260.       if MovieName = '' then
  261.         MovieName := GetField(fieldOriginalTitle);
  262.       if Input('Importation DVDFR', 'Entrez le titre du film :', MovieName) then
  263.         AnalyzePage('http://www.dvdfr.com/api/search.php?title=' + UrlEncode(MovieName));
  264.     end
  265.     else
  266.       ShowError('Ce script requiert une version plus rΘcente de Ant Movie Catalog (au moins la version 3.5)');
  267. end.
  268.